#pragma once
#include <Arduino.h>
#include <Adafruit_NeoPixel.h>

/**
 * @class Led
 * @brief 控制 ESP32-S3 板载 RGB 灯（WS2812/SK6812）
 *
 * 支持点亮、熄灭、切换颜色、设置自定义颜色等功能。
 * 默认使用 GPIO48（ESP32-S3-DevKitC-1 板载 RGB）。
 */
class Led {
public:
    /**
     * @brief 构造函数
     * @param pin RGB 灯连接的引脚（默认 GPIO48）
     * @param num 灯的数量（默认 1）
     */
    explicit Led(uint8_t pin = 48, uint8_t num = 1);

    /**
     * @brief 初始化 RGB 灯
     */
    void begin();

    /**
     * @brief 点亮 RGB 灯（使用当前颜色）
     */
    void on();

    /**
     * @brief 关闭 RGB 灯
     */
    void off();

    /**
     * @brief 切换状态（亮/灭）
     */
    void toggle();


    void randomColor();

    /**
     * @brief 设置颜色（RGB888 格式）
     * @param r 红色通道（0-255）
     * @param g 绿色通道（0-255）
     * @param b 蓝色通道（0-255）
     */
    void setColor(uint8_t r, uint8_t g, uint8_t b);

private:
    Adafruit_NeoPixel strip;
    uint8_t pin;
    bool state;
    uint8_t red, green, blue;
};